/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package src.j2ee.compumake.dao;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import src.j2ee.compumake.dominio.Sucursal;
import src.j2ee.compumake.dominio.Usuario;
import src.j2ee.compumake.dominio.Zona;

/************************************************************************
 **                                                                    **
 ** Nombre: DAOSucursal.java                                           **
 ** Version: v1.0.0                                                    **
 ** Autor: amado.cante                                                 **
 ** Creado: 25/04/2013                                                 **
 ** Modificado:                                                        **
 ** Diagrama:                                                          **
 ** Caso de uso:                                                       **
 **                                                                    **
 ***********************************************************************/
public class DAOSucursal {
    private static final String TABLA_SUCURSALES = "Sucursales";
    private static final String COLUMNA_ID_SUCURSAL = "idSucursal";
    private static final String ZONA = "zona";
    private static final String ENCARGADO = "usrEncargado";
    private static final String NOMBRE_SUCURSAL = "nombreSucursal";
    private Connection conexion;
    private AccesoBaseDatos acceso = new AccesoBaseDatos();
    
    public DAOSucursal(){
        this.conexion = this.acceso.abrirConexion();
    }
    
    public Sucursal buscaSucursal(int idSucursal){
        try{
            Statement sentencia = acceso.crearSentenciaBD(conexion);
            String query = "SELECT * FROM "+TABLA_SUCURSALES+" WHERE "
                    +COLUMNA_ID_SUCURSAL+"='"+idSucursal+"';";
            ResultSet resultado = sentencia.executeQuery(query);
            DAOUsuario daousuario = new DAOUsuario();
            DAOZonas daozona = new DAOZonas();
            if(resultado.first()){
                int idZona = resultado.getInt(2);
                String nombreUsuario = resultado.getString(3);
                String nombreSucursal = resultado.getString(4);
                Usuario usuario = daousuario.buscarUsuario(nombreUsuario);
                Zona zona = daozona.buscarZona(idZona);
                Sucursal sucursal = new Sucursal(idSucursal, zona, usuario, nombreSucursal);
                return sucursal;
            }else{
                return null;
            }
        }catch(SQLException ex){
            return null;
        }
    }
    
    public ArrayList<Sucursal> listarSucursales(){
        ArrayList<Sucursal> sucursales = new ArrayList<>();
        try{
            Statement sentencia = acceso.crearSentenciaBD(conexion);
            String query = "SELECT "+COLUMNA_ID_SUCURSAL+" FROM "+TABLA_SUCURSALES;
            ResultSet resultado = sentencia.executeQuery(query);
            while(resultado.next()){
                int idSucursal = resultado.getInt(1);
                Sucursal sucursal = this.buscaSucursal(idSucursal);
                if(sucursal!=null){
                    sucursales.add(sucursal);
                }
            }
            return sucursales;
        }catch(SQLException ex){
            return sucursales;
        }
    }
    
    public boolean registrarSucursal(Sucursal sucursal){
        try{
            Statement sentencia = this.acceso.crearSentenciaBD(conexion);
            String query = "INSERT INTO "+TABLA_SUCURSALES+"("+ZONA+","
                    +ENCARGADO+","+NOMBRE_SUCURSAL+") VALUES ('"
                    +sucursal.getZona().getId()+"','"
                    +sucursal.getEncargado().getNombreUsuario()+"','"
                    +sucursal.getNombre()+"');";
            int afectado = sentencia.executeUpdate(query);
            if(afectado>0){
                DAOUsuario daousuario = new DAOUsuario();
                return daousuario.hacerEncargadoSucursal(sucursal.getEncargado());
            }else{
                return false;
            }
        }catch(SQLException ex){
            return false;
        }
    }
}
